package avicit.bdp.dgs.standard.dao;

import avicit.bdp.common.base.BaseDAO;
import avicit.bdp.dgs.standard.dto.DataElementHistoryDto;
import avicit.bdp.dgs.standard.vo.DataElementHistoryVo;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author mayi 数据元历史版本数据操作层
 */
@Repository
public interface DataElementHistoryDao extends BaseDAO<DataElementHistoryDto> {

  /**
   * 查询分页列表
   *
   * @param typeIdList 分类ID
   * @param keyWords 查询关键词
   * @param status 状态
   * @return 分页列表
   */
  Page<DataElementHistoryDto> getPageList(
      @Param("typeIdList") List<String> typeIdList,
      @Param("keyWords") String keyWords,
      @Param("status") Integer status);

  /**
   * 通过数据元ID删除所有记录
   *
   * @param dataElementId 数据元ID
   */
  void deleteByDataElementId(@Param("dataElementId") String dataElementId);

  /**
   * 通过数据元ID查询最大历史记录版本
   *
   * @param dataElementId 数据元ID
   * @return 最大历史记录版本
   */
  String searchMaxVersionByDataElementId(@Param("dataElementId") String dataElementId);

  /**
   * 通过数据元ID分页查询
   *
   * @param dataElementId 数据元ID
   * @return 分页数据
   */
  Page<DataElementHistoryVo> getVersionPage(@Param("dataElementId") String dataElementId);

  DataElementHistoryDto selectByDataElementIdAndVersion(
      @Param("dataElementId") String dataElementId,
      @Param("dataElementVersion") String dataElementVersion);

  int batchInsert(@Param("list") List<DataElementHistoryDto> list);

  int batchUpdateStatus(@Param("list") List<DataElementHistoryDto> list);

  int countByStatus(@Param("dataElementId") String dataElementId, @Param("status") int status);
}
